Firebase Authenticationトークンをバックエンドのpythonで検証する
#python #Firebase_Authentication #jwt
概要
Firebase Authenticationはフロントからの認証が成功すると、IDトークンを発行できるようになる。
フロントでそのIDトークンを受け取って、それを別のバックエンドサーバーに送ることで、そのサーバーでも認証が行えるようにしたい。
IDトークンはJWT形式となってる
目標
カスタムバックエンドにフロントからIDトークンを渡して、検証させて認証成功させる
IDトークンからUserIDまたはe-mailを取得する
IDトークンの有効期限も確認してみる
作業ログ
pythonでトークンの検証を行おうと思う。
方針
APIとかは作らない。Admin SDKを使って、検証がどう行われるのかを確認するだけ。
IDトークンは直接コードに与える形で検証する。
やっていこう
まずはpythonプロジェクトを簡単に立ち上げる。poetryでサクッと。
次にfirebase-admin-sdkをインストールする
$ poetry add firebase-admin
なんかgrpcioのインストールでエラーが出る....
どういうことだろう...
環境は以下
Mac M1
python3.10.9
poetry利用
インストールしようとしてるgrpcioのバージョンは1.51.0
ん〜〜〜、ちょっとMacの環境やと面倒臭そうですな....
Docker上でやっちゃいます。いけました。
firebase-adminをインストールして...
参考:サーバーにFirebaseAdminSDKを追加します  |  Firebase Admin SDK
コンソールから秘密鍵をダウンロードして...
GOOGLE_APPLICATION_CREDENTIALSていう環境変数に秘密鍵(jsonファイル)のpathを入れて...
以下のような検証コードを書いて...
code: sample.py
from firebase_admin import auth
id_token = "......"
decoded_token = auth.verify_id_token(id_token)
uid = decoded_token'uid'
終わり!!!
参考:IDトークンを確認する  |  Firebase Authentication
decoded_tokenに値が入ってたら、認証は成功している
もし検証に失敗した場合....
firebase_admin._auth_utils.InvalidIdTokenErrorが発生する
参考
IDトークンを確認する  |  Firebase Authentication
hr.icon
Google Developers Japan: Firebase Admin を Python に
Firebase を使用した App Engine 上でのユーザー認証  |  Python 2 の App Engine スタンダード環境  |  Google Cloud
【第2回】Responder + Firestore でモダンかつサーバーレスなブログシステムを作ってみた【Firebase設定と認証機能実装】 – 株式会社ライトコード
【解決済み】FastAPIでFirebase AuthenticationのIDトークンをサードパーティーJWTライブラリで検証する方法 〜試行錯誤の過程を添えて〜 | blog@qs-grct